﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using LCTMoodle.Models.ViewModels;
using LCTMoodle.Models.DataModels;

namespace LCTMoodle.Service
{
    public class CauHoiService : Service
    {
        /// <summary>
        /// Thêm câu hỏi
        /// </summary>
        /// <param name="cauHoi">Tiêu đề, nội dung, mã người tạo, chuỗi mã từ khóa</param>
        /// <returns>Mã câu hỏi</returns>
        public static int themCauHoi (CauHoiDataModel cauHoi)
        {
            return executeScalar<int>
                (
                    "themCauHoi",
                    new object[] 
                    {
                        cauHoi.tieuDe,
                        cauHoi.noiDung,
                        cauHoi.maNguoiTao,
                        cauHoi.chuoiMaTuKhoa
                    }
                );
        }

        /// <summary>
        /// Lấy toàn bộ câu hỏi
        /// </summary>
        public static List<CauHoiViewModel> layCauHoi()
        {
            return executeDataReader_List<CauHoiViewModel>
                (
                    "layCauHoi",
                    new object[0]
                );
        }

        /// <summary>
        /// Tìm câu hỏi theo thông tin
        /// </summary>
        /// <param name="thongTin">Thông tin</param>
        public static List<CauHoiViewModel> layCauHoiTheoThongTin_TimKiem(string thongTin)
        {
            return executeDataReader_List<CauHoiViewModel>
                (
                    "layCauHoiTheoThongTin_TimKiem",
                    new object[]
                    {
                        thongTin
                    }
                );
        }

        /// <summary>
        /// Lấy câu hỏi theo mã câu hỏi (Mỗi lần lấy là cập nhật lượt view thêm 1)
        /// </summary>
        /// <param name="ma">Mã câu hỏi</param>
        /// <returns></returns>
        public static CauHoiViewModel layCauHoiTheoMaCauHoi(int ma)
        {
            return executeDataReader<CauHoiViewModel>
                (
                    "layCauHoiTheoMaCauHoi",
                    new object[] 
                    {
                        ma
                    }
                );
        }

        /// <summary>
        /// Xóa câu hỏi
        /// </summary>
        /// <param name="ma">Mã câu hỏi</param>
        /// <returns></returns>
        public static bool xoaCauHoiTheoMaCauHoi(int ma)
        {
            return executeNonQuery
                (
                    "xoaCauHoiTheoMaCauHoi",
                    new object[]
                    {
                        ma
                    }
                );
        }

        /// <summary>
        /// Cập nhật đánh giá câu hỏi
        /// </summary>
        /// <param name="maCauHoi">Mã câu hỏi</param>
        /// <param name="giaTri">1: Tốt - -1: Xấu</param>
        /// <param name="maNguoiDung">Mã người dùng</param>
        public static bool capNhatDanhGiaCauHoi(int maCauHoi, int giaTri, int maNguoiDung)
        {
            return executeNonQuery
                (
                    "capNhatDanhGiaCauHoi",
                    new object[]
                    {
                        maCauHoi,
                        giaTri,
                        maNguoiDung
                    }
                );
        }

        /// <summary>
        /// Lấy câu hỏi theo mã trả lời
        /// </summary>
        /// <param name="maTraLoi">Mã trả lời</param>
        public static CauHoiViewModel layCauHoiTheoMaTraLoi(int maTraLoi)
        {
            return executeDataReader<CauHoiViewModel>
                (
                    "layCauHoiTheoMaTraLoi",
                    new object[]
                    {
                        maTraLoi
                    }
                );
        }
    }
}